package QianFeng07.IODemo.File;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

/**
 * File类的使用
 **/
public class FileDemo {
    public static void main(String[] args) {
        //File类表示一个文件或目录
        //F:\\Test\\Test.txt  转义字符\   或者直接用 / 来表示路径
        //("F:" + File.separator + "Test" + File.separator + "Test.txt")来表示路径
        File file1 = new File("F:/Test/Test.txt");
        //创建文件
        if (!file1.exists()) { //判断文件是否存在
            try {
                file1.createNewFile();//创建文件
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        //System.out.println("是否为文件" + file1.isFile());
        System.out.println("是否为文件夹" + file1.isDirectory());

        File file2 = new File("F:\\Test\\my");//my文件夹对象赋予file2
        boolean b = file2.delete();//删除不了，文件夹里有内容
        System.out.println(b);

        String[] names = file2.list();//列出当前文件目录下的所有文件名
        System.out.println(Arrays.toString(names));

        //文件使用方法
        System.out.println("--------------------------文件信息--------------------------");
        File[] files = file2.listFiles();//列出当前目录下的所有文件，以file对象返回
        for (File file : files) {
            System.out.println("length=" + file.length());
            System.out.println("name=" + file.getName());
            System.out.println("相对路径=" + file.getPath());
            System.out.println("绝对路径=" + file.getAbsolutePath());
            System.out.println("是否为隐藏文件=" + file.isHidden());
            System.out.println("是否为可读文件=" + file.canRead());
            Date date = new Date(file.lastModified());
            DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss:SSS'Z'");
            System.out.println("文件最后修改的时间（毫秒）=" + dateFormat.format(date));
        }

        //创建文件夹
        File file3 = new File("F:\\Test\\bin1");
        file3.mkdirs();//创建文件目录方法

        //重命名与移动文件
        //file3.renameTo(new File("F:\\Test\\bin2"));//重命名
        file3.renameTo(new File("F:\\Test\\my\\bin1"));//移动文件夹

        //FileFilter 文件过滤器
        File file4 = new File("F:\\Test\\my");
        /*File[] files1 = file4.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.getName().endsWith(".txt");//过滤文件，只输出.txt文件类型的文件
            }
        });*/
        //lambda表达式输出
        File[] files1 = file4.listFiles((pathname) -> pathname.getName().endsWith(".txt"));
        System.out.println("--------------过滤文件1----------------");
        for (File file : files1) {
            System.out.println(file.getName());
        }



    }
}
